package com.kongjs.application.controller.rest;

import com.kongjs.application.model.dto.*;
import com.kongjs.application.service.OrderService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

/**
 * 订单管理接口
 */
@RequestMapping("/orders")
public class OrderController {
    @Resource
    private OrderService orderService;

    /**
     * 创建新订单（寄件）
     *
     * @param createOrderDTO 订单创建请求
     * @return 订单详情
     */
    @PostMapping
    public boolean createOrder(@RequestBody CreateOrderDTO createOrderDTO) {
        return orderService.create(createOrderDTO);
    }

    /**
     * 获取用户订单列表
     *
     * @param userId 用户ID
     * @param status 订单状态（可选）
     * @return 订单列表
     */
    @GetMapping("/user/{userId}")
    public PageDTO<OrderDTO> getOrderPageByUser(PageQueryDTO pageQueryDTO, @PathVariable Long userId, @RequestParam(required = false) String status) {
        return orderService.getOrderPageByUser(pageQueryDTO, userId, status);
    }

    /**
     * 获取订单详情
     *
     * @param orderId 订单ID
     * @return 订单详情
     */
    @GetMapping("/{orderId}")
    public OrderDetailDTO getOrderDetailById(@PathVariable Long orderId) {
        return orderService.getOrderDetailById(orderId);
    }

    /**
     * 快递二维码有多种,这里式订单二维码
     * 生成订单二维码
     *
     * @param orderId 订单ID
     * @return 二维码图片(Base64)
     */
    @GetMapping("/{orderId}/qrcode")
    public QrCodeDTO generateQrCode(@PathVariable Long orderId) {
        return orderService.generateQrCode();
    }
}
